﻿namespace est10
{
    internal class class10
    {
        #region     知识点一   基本概念
        //重载概念
        //在同一语句块中（class或static中）
        //函数（方法）命名相同
        //参数的数量不同
        //或者
        //参数的数量相同 但参数的类型或顺序不同

        //作用：
        //1.命名一组功能相似的函数 减少函数名的数量 避免命名空间污染
        //2.提升程序可读性
        #endregion

        #region     知识点二   实例
        //注意：
        //1.重载和返回值类型无关，只和参数类型 个数 顺序有关
        //2.调用时 程序会自己根据传入的参数类型判断使用哪一个重载
        static int CaIcSum(int a,int b)
        {
            return a + b;
        }

        //参数数量不同
        static int CaIcSum(int a,int b,int c)
        {
            return a + b + c; 
        }

        //数量相同 类型不同
        static float CaIsSum(float a,float b)
        {
            return a + b;
        }

        //数量相同 顺序不同
        static float CaIsSum(int a,float b)
        {
            return a + b;
        }

        //ref和out   可以理解成 他们也是一种变量类型 所以可以用在重载中 但是 ref和out不能同时修饰
        static float CaIsSum(ref float a,int b)//不加ref和out就是传入数值，加了就是传入地址
        {
            return a + b;  
        }
        #endregion
        static void Main(string[] args)
        {
            Console.WriteLine("函数重载");
            Console.WriteLine(CaIcSum(1, 2));
            Console.WriteLine(CaIcSum(1, 2, 3));
            Console.WriteLine(CaIsSum(1.3f,5));
            Console.WriteLine(CaIsSum(1,1.3f));
        }
    }
}
